#ifndef _SERIALPORT_H_
#define _SERIALPORT_H_
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<errno.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<termios.h>
#include<stdlib.h>
#include<sys/ioctl.h>

using namespace std;

//@brief:
//@brief:linux下的串口通信类，可以通过构造函数直接打开一个串口，并初始化（默认9600波特率，8位数据，无奇偶校验，1位停止位）
//             send()成员函数可以直接发送字符串，set_opt()更改参数。串口会在析构函数中自动关闭
//@example:Serialport exp("/dev/ttyUSB0");
//                  exp.set_opt(115200,8,'N',1);
//


typedef enum
{
	Judge_1 = 0,
	Judge_2 = 1,
	//填写姿态名称
	zitai1,
	zitai2,
	zitai3,

	//填写大小名称,
	daxiao1,
	daxiao2,
	daxiao3 ,
	daxiao4 ,
	daxiao5,
	END_1,
	END_2,
	BOARD_CMD_DATA_Total,

}board_cmd_data_e;

typedef class Serialport
{
public:
	int fd;
	char tmpchar[BOARD_CMD_DATA_Total];
	const char *buffer;
	unsigned char rData[255];

public:
	Serialport(string port);//定义Serialport类的成员函数，
	Serialport();
	~Serialport();
	int open_port(string port);
	int set_opt(int nSpeed = 115200, int nBits = 8, char nEvent = 'N', int nStop = 1);
	bool send(char *str);
	bool sendAngle(float angleYaw, float anglePitch);
	bool sendXYZ(double * xyz);
	bool sendXY(double * xy);
	void readMode(int &carMode);
}serial_t;

#endif
